#pragma once

#include <string>
#include <memory>
#include <nlohmann/json.hpp>
#include "redis_pool.hpp"
#include <optional>

class RedisManager {
public:
    explicit RedisManager(const RedisConfig& config);
    ~RedisManager() = default;

    // 判断key是否存在
    bool exists(const std::string& key);

    // 获取key的值
    std::optional<std::string> get(const std::string& key);

    // 设置key的值
    bool set(const std::string& key, const std::string& value);

    // 设置key的值，并设置过期时间
    bool setex(const std::string& key, int64_t ttl, const std::string& value);

    // 删除key
    bool del(const std::string& key);

private:
    std::unique_ptr<RedisPool> redis_pool_;
};